package com.kristin.thread.threadpool;

import java.util.concurrent.*;

public class Client {


    public static void main(String[] args) {
        // 固定长度的线程池，提交一个任务就会创建一个线程，直到达到线程池的最大数量
        // 这时线程池的规模将不再增大，当线程发生未预期的错误而结束时，线程池会补充
        // 一个新的线程
        ExecutorService service = Executors.newFixedThreadPool(3);
//        for(int i= 0;i < 10 ; i++) {
//            service.submit(new Runnable() {
//                public void run() {
//                    System.out.println(Thread.currentThread().getName() + "正在执行任务");
//                    int x = 1;
//                    x = x / 0;
////                    throw new RuntimeException("运行时异常");
////                    System.out.println(Thread.currentThread().getName() + "正在执行任务");
//                }
//            });
//        }
        try {
            Future<String> result = service.submit(new Callable<String>() {
                public String call() throws Exception {
                    System.out.println("doSomething");
                    Thread.sleep(4000);
                    return "success";
                }
            });
            System.out.println("准备获取结果");
            String value = result.get(3, TimeUnit.SECONDS);
            System.out.println("准备获取结果完成");
            System.out.println(value);
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

}
